This invention relates generally to storage systems associated with computer systems and more particularly to providing a method and apparatus for improving performance of data transactions associated with several devices connected via a bus or network.
As it is known in the art, computer systems generally include a central processing unit, a memory subsystem and a storage subsystem. According to a networked or enterprise model of a computer system, the storage subsystem associated with or in addition to a local computer system may include a large number of independent storage devices or disks housed in a single enclosure. This array of storage devices is typically connected to several computers over a network. Such a model allows for the centralization of data which is to be shared among many users and also allows a single point of maintenance for the storage functions associated with computer systems.
One type of storage subsystem known in the art is one which includes a number of redundant disk storage devices configured as an array. Such a system is typically known as a RAID storage system. One of the advantages of a RAID type storage system is that it provides a massive amount of storage (typically in the tens to hundreds of gigabytes range) and, depending upon the RAID configuration, may provide several differing levels of fault tolerance.
In addition to the fault tolerance associated with a single storage system, additional steps may be taken to ensure that a storage system provides uninterrupted service. One method of achieving this level of system availability is to provide a so called "remote data facility". A remote data facility is, at a basic level, a second storage system. The second storage system is usually placed in a remote location and maintains a mirror image of the data stored within the local storage system. The remote data facility solution generally requires additional components be added to both the local and remote storage system to handle the data transfers therebetween.
One of the challenges of providing a remote data facility involves servicing the data transfer requests from the various host computer systems connected to the local storage system while transferring data to the remote storage system. Servicing the transfer of data from the local to the remote system may be accomplished through the use of a queue structure.
To be effective, the queue structure should always be in a valid state. That is, the queue should conform to all restrictions placed on it by the storage system. Some example of restrictions are: two host requests for the same device must not be in the queue at the same time; there may not be a copy request and a host request to the same (disk) track at the same time in the queue; a record in the queue for a remote data transfer must be locked while serviced; two records containing requests to the same device may not be locked at the same time.
The storage system places two conflicting demands on the queue. The first demand is that the queue always be in a valid state. That is, the queue must, at any given time, conform to the restrictions placed on it by the storage system. The second demand placed on the queue is one of performance. The queue must be cheap (in terms of cycle time) to access. Thus the queue must be easy to manipulate and service. In addition, the queue should allow for the highest possible degree of parallelism among the various servicing devices in order to maximize throughput between the local and remote storage system. It can be seen that the lock restrictions and the speed requirements described above are generally incompatible. It would be advantageous therefore to provide a queuing scheme which allows for a high degree of parallelism while maintaining validity of the storage system.